package models

import (
	"time"

	"github.com/astaxie/beego/orm"
)

type UserInfo struct {
	Id string `orm:"pk;size(50)"` // 	用户编号

	Account string `orm:"size(50)"` // 	用户登录账号

	Name string `orm:"size(50)"` // 	昵称

	CardNum string `orm:"null;size(20)"` // 	身份证号

	Password string `orm:"size(40)"` // 	密码

	Birth time.Time `orm:"null"` // 	生日

	Qq string `orm:"null;size(20)"` // 	QQ

	Email string `orm:"null;size(30)"` // 	邮件

	Weixin string `orm:"null;size(50)"` // 	微信

	Phone string `orm:"null;size(20)"` // 	电话

	Sex string `orm:"null;size(5)"` // 	性别

	LastTime time.Time `orm:"auto_now_add;type(datetime)"` // 	最后一次登录时间

	Ip string `orm:"null;size(50)"` // 	登录IP

	Mac string `orm:"null;size(100)"` // 	登录者的网卡MAC

	IsEnable int `orm:"size(2)"` // 	账号使用状态
}

/*
 *	注释：保存用户
 *	时间：2018-04-06
 *	作者：Haojie Li
 */
func SaveUser(user *UserInfo) int64 {
	o := orm.NewOrm()
	id, _ := o.Insert(user)
	return id
}

/**
 *	注释：更新用户
 *	时间：2018-04-06
 *	作者：Haojie Li
 */
func UpdateUser(user *UserInfo) {
	o := orm.NewOrm()
	o.Update(user)
}

/**
 *	注释：删除用户
 *	时间：2018-04-06
 *	作者：Haojie Li
 */
func DeleteUser(user *UserInfo) {
	o := orm.NewOrm()
	o.Delete(user)
}

/**
 *	注释：根据用户编号查询用户
 *	时间：2018-04-06
 *	作者：Haojie Li
 */
func FindUserById(userid string) (bool, UserInfo) {
	o := orm.NewOrm()
	var user UserInfo
	err := o.QueryTable(user).Filter("Id", userid).One(&user)
	return err != orm.ErrNoRows, user
}

/**
 *	注释：根据用户账号查询用户
 *	时间：2018-04-06
 *	作者：Haojie Li
 */
func FindUserByAccount(account string) (bool, UserInfo) {
	o := orm.NewOrm()
	var user UserInfo
	err := o.QueryTable(user).Filter("Account", account).One(&user)
	return err != orm.ErrNoRows, user
}

/**
 *	注释：根据指定列名及列名值来查询
 *	时间：2018-04-06
 *	作者：Haojie Li
 */
func FindUserByColumn(columnNme string, value string) []*UserInfo {
	o := orm.NewOrm()
	var user UserInfo
	var dataList []*UserInfo
	o.QueryTable(user).RelatedSel().Filter(columnNme, value).All(&dataList)
	return dataList
}
